package com.zenithmind.version.pojo.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 提交实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("version_commit")
@Schema(description = "提交实体")
public class Commit extends BaseEntity {

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 分支ID
     */
    @Schema(description = "分支ID")
    private String branchId;

    /**
     * 分支名称
     */
    @Schema(description = "分支名称")
    private String branchName;

    /**
     * 提交哈希值
     */
    @Schema(description = "提交哈希值")
    private String hash;

    /**
     * 短哈希值
     */
    @Schema(description = "短哈希值")
    private String shortHash;

    /**
     * 提交消息
     */
    @Schema(description = "提交消息")
    private String message;

    /**
     * 提交描述
     */
    @Schema(description = "提交描述")
    private String description;

    /**
     * 作者ID
     */
    @Schema(description = "作者ID")
    private String authorId;

    /**
     * 作者名称
     */
    @Schema(description = "作者名称")
    private String authorName;

    /**
     * 作者邮箱
     */
    @Schema(description = "作者邮箱")
    private String authorEmail;

    /**
     * 提交者ID
     */
    @Schema(description = "提交者ID")
    private String committerId;

    /**
     * 提交者名称
     */
    @Schema(description = "提交者名称")
    private String committerName;

    /**
     * 提交者邮箱
     */
    @Schema(description = "提交者邮箱")
    private String committerEmail;

    /**
     * 父提交ID
     */
    @Schema(description = "父提交ID")
    private String parentCommitId;

    /**
     * 父提交哈希
     */
    @Schema(description = "父提交哈希")
    private String parentCommitHash;

    /**
     * 提交类型（1-普通提交，2-合并提交，3-初始提交，4-回滚提交）
     */
    @Schema(description = "提交类型（1-普通提交，2-合并提交，3-初始提交，4-回滚提交）")
    private Integer type;

    /**
     * 提交状态（1-成功，2-失败，3-处理中）
     */
    @Schema(description = "提交状态（1-成功，2-失败，3-处理中）")
    private Integer status;

    /**
     * 变更文件数量
     */
    @Schema(description = "变更文件数量")
    private Integer changedFiles;

    /**
     * 新增行数
     */
    @Schema(description = "新增行数")
    private Integer addedLines;

    /**
     * 删除行数
     */
    @Schema(description = "删除行数")
    private Integer deletedLines;

    /**
     * 提交大小（字节）
     */
    @Schema(description = "提交大小（字节）")
    private Long size;

    /**
     * 提交标签（JSON格式）
     */
    @Schema(description = "提交标签（JSON格式）")
    private String tags;

    /**
     * 是否已验证（0-否，1-是）
     */
    @Schema(description = "是否已验证（0-否，1-是）")
    private Integer isVerified;

    /**
     * 验证签名
     */
    @Schema(description = "验证签名")
    private String signature;

    /**
     * 提交时间
     */
    @Schema(description = "提交时间")
    private LocalDateTime commitTime;

    /**
     * 推送时间
     */
    @Schema(description = "推送时间")
    private LocalDateTime pushTime;
}
